function hidcontrolmapa(controlDiv)
{
    this.controlDiv = controlDiv;

    this.InicializarControles = function ()
    {
        this.CrearControl('Modificar Area','click', this.Modificar);
        this.CrearControl('Delimitar Area','click',this.Delimitar);
        this.CrearControl('Guardar','click', this.Guardar);
    };
    this.CrearControl = function (nombrefuncion, evento, funcion)
    {
        // Set CSS styles for the DIV containing the control
        // Setting padding to 5 px will offset the control
        // from the edge of the map
        this.controlDiv.style.padding = '5px';

        // Set CSS for the control border
        var controlUI = this.CrearUI('white', 'solid', '2px', 'pointer', 'center', 'Click aqui');
        this.controlDiv.appendChild(controlUI);

        // Set CSS for the control interior
        var controlText = this.CrearTexto('Arial,sans-serif', '12px', '4px', '4px', nombrefuncion)
        controlUI.appendChild(controlText);

        this.AgregarEventoControl(controlUI, evento, funcion);
    };
    this.CrearUI = function (fondo, estiloborde, anchoborde, cursor, alineaciontexto, titulo)
    {
        // Set CSS for the control border
        var controlUI = document.createElement('DIV');
        controlUI.style.backgroundColor = fondo;
        controlUI.style.borderStyle = estiloborde;
        controlUI.style.borderWidth = anchoborde;
        controlUI.style.cursor = cursor;
        controlUI.style.textAlign = alineaciontexto;
        controlUI.title = titulo;

        return controlUI;
    };
    this.CrearTexto = function (fuente, tamaño, paddingLeft, paddingRight,nombre)
    {
        // Set CSS for the control interior
        var controlText = document.createElement('DIV');
        controlText.style.fontFamily = fuente;
        controlText.style.fontSize = tamaño;
        controlText.style.paddingLeft = paddingLeft;
        controlText.style.paddingRight = paddingRight;
        controlText.innerHTML = nombre;

        return controlText;
    };
    this.AgregarEventoControl = function (controlUI, evento, funcion)
    {
        google.maps.event.addDomListener(controlUI, evento, funcion);
    };
    this.Modificar = function ()
    {
        mapaModificado = true;
        mapa.setOptions({zoomControl: true});
    };
    this.Delimitar = function ()
    {
        strictBounds = mapa.getBounds();

        //obtener los valores de los limites donde el mapa se encuentra
        valorMaximoLongitud = strictBounds.getNorthEast().lng();
        valorMaximoLatitud = strictBounds.getNorthEast().lat();
        valorMinimoLongitud = strictBounds.getSouthWest().lng();
        valorMinimoLatitud = strictBounds.getSouthWest().lat();

        //asignarlos a entradas de un formulario
        document.getElementById("longmaxima").value = valorMaximoLongitud;
        document.getElementById("latimaxima").value = valorMaximoLatitud;
        document.getElementById("longminima").value = valorMinimoLongitud;
        document.getElementById("latiminima").value = valorMinimoLatitud;

        //deshabilitamos las opciones de control del mapa
        mapa.setOptions({disableDefaultUI: true});

        //indicamos que el estado de modificacion es falso ya que se esta delimitando el mapa
        mapaModificado = false;

        //Se debe enviar a guardar
        document.formLatiLong.submit();
    };
    this.Guardar = function ()
    {
        //se almacena las listas de latitudes, longitudes, etc de los componentes en entradas html las cuales son
        //enviadas a traves de un formulario
        var cmp = new hidcomponente(1,1,1,1);
        document.getElementById("idcomponenteslat").value = cmp.hidcomp_latarray(componentes);
        document.getElementById("idcomponenteslong").value = cmp.hidcomp_lngarray(componentes);
        document.getElementById("idcomponentesnomb").value = cmp.hidcomp_nombarray(componentes);
        document.getElementById("idcomponentestipptomon").value = cmp.hidcomp_tipoptomonarray(componentes);
        document.getElementById("idtiposdecomponente").value = cmp.hidcomp_tiparray(componentes);
        document.getElementById("ididecomponente").value = cmp.hidcomp_idearray(componentes);
        document.getElementById("ideliminados").value = eliminadosArray;
        document.getElementById("lineas").value = lineArray;
        document.formCompLatiLong.submit();
    };
}